﻿using System;
using System.Text;
using System.Collections;
using System.ComponentModel;
using System.Collections.Generic;
using Sinacor.Infra.UI.Common;
using Sinacor.Infra.Common.Exceptions;
using Sinacor.Infra.UI.Managers;
using Sinacor.UI.Bovespa.Ordens.Common;
using Sinacor.UI.Bovespa.Ordens.Communication;
using Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem;
using Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Operador.Operador;
using Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Calendario.Calendario;
//using Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Titulo.Titulo; //excluido para forçar uso do model - esertorio - 200803202130 - 
using Sinacor.UI.Bovespa.Clientes.Communication;
using Sinacor.UI.Bovespa.Clientes.Communication.Bovespa.Cliente.Cliente;

namespace Sinacor.UI.Bovespa.Ordens.Presenter
{
    /// <summary>
    /// Presenter Manutencao de Ordens
    /// </summary>
    /// <user>hpereira</user>
    public class ManutencaoDeOrdensPresenter: PresenterBase
    {
        #region Variaveis de Classe
        IManutencaoDeOrdens _view;
        Calendario _comunicacaoCalendario;
        Operador _comunicacaoOperador;
        Titulo _comunicacaoTitulo;
        Ordem _comunicacaoOrdem;
        Cliente _comunicacaoCliente;
        
        #endregion

        #region Construtor
        /// <summary>
        /// Contrutor Classe
        /// </summary>
        /// <param name="view"></param>
        /// <user>hpereira</user>
        public ManutencaoDeOrdensPresenter(IManutencaoDeOrdens view): base((ISinacorView)view)
        {
            this._view = view;
        }
        #endregion Construtor

        #region CarregarBolsa
        /// <summary>
        /// CarregarBolsa com a model Inicial
        /// </summary>
        /// <user>hpereira</user>
        public void CarregarBolsa(ModelManutencaoOrdensInicial model)
        {
            BolsaResponse retorno = null;
            ConsultarBolsaCodigoRequest request = null;
            

            try
            {
                this._comunicacaoOrdem = new Ordem();
                request = new ConsultarBolsaCodigoRequest();
                request.Codigo = model.BolsaInicial;

                retorno = this._comunicacaoOrdem.ConsultarBolsaCodigo(request);
            }
            catch (ClientException ex)
            {
                this.HandleException(ex);                
            }
            catch (ClientValidationException ex)
            {
                this.HandleException(ex);                
            }
            catch (ClientCommunicationException ex)
            {
                this.HandleException(ex);                
            }
            catch (ClientGeneralException ex)
            {
                this.HandleException(ex);
            }
            catch (Exception ex)
            {
                this.HandleException(ex);
            }

            if (retorno != null)
            {
                this._view.ExibirDadosBolsa(retorno.Descricao);
            }

        }

        /// <summary>
        /// Carregar Bolsa com model corrente
        /// </summary>
        /// <param name="model"></param>
        /// <user>hpereira</user>
        public void CarregarBolsa(ModelManutencaoOrdens model)
        {
            BolsaResponse retorno = null;
            ConsultarBolsaCodigoRequest request = null;
            try
            {
                this._comunicacaoOrdem = new Ordem();
                request = new ConsultarBolsaCodigoRequest();

                request.Codigo = model.Bolsa;
                retorno = this._comunicacaoOrdem.ConsultarBolsaCodigo(request);

            }
            catch (ClientException ex)
            {
                this.HandleException(ex);                
            }
            catch (ClientValidationException ex)
            {
                this.HandleException(ex);                
            }
            catch (ClientCommunicationException ex)
            {
                this.HandleException(ex);                
            }
            catch (ClientGeneralException ex)
            {
                this.HandleException(ex);
            }
            catch (Exception ex)
            {
                this.HandleException(ex);
            }

            if (retorno != null)
            {
                this._view.ExibirDadosBolsa(retorno.Descricao);
            }
            else
            {
                this._view.ExibirDadosBolsa("");
            }


        }
        #endregion CarregarBolsa

        #region CarregarCliente

        /// <summary>
        /// Carregar Dados do Cliente
        /// </summary>
        /// <user>hpereira</user>
        public void CarregarCliente(ModelManutencaoOrdens model)
        {            
            ClienteResponse response = null;
            ConsultarClienteApelidoRequest request = null;

            try
            {
                this._comunicacaoCliente = new Cliente();

                request = new ConsultarClienteApelidoRequest();
                request.Apelido = model.ApelidoCliente;
                request.Digito = model.CodigoDigitoCliente; //incluido - esertorio - 200804091800 - ref issue ID0002810

                response = this._comunicacaoCliente.ConsultarClienteApelido(request);

            }
            catch (ClientException ex)
            {
                this.HandleException(ex);
            }
            catch (ClientValidationException ex)
            {
                this.HandleException(ex);
            }
            catch (ClientCommunicationException ex)
            {
                this.HandleException(ex);
            }
            catch (ClientGeneralException ex)
            {
                this.HandleException(ex);
            }
            catch (Exception ex)
            {
                this.HandleException(ex);
            }

            if (response != null)
            {
                //traduz de response para model
                model.CodigoCliente = response.Codigo.Value;
                model.CodigoDigitoCliente = response.DigitoVerificador;
                model.NomeCliente = response.Nome;
                model.ComplementoNomeCliente = response.ComplementoNome;
                model.PercentualAcrescismoReducao = response.PercentualReducaoAcrescimo;
                model.ContaMae = response.ClienteBroker.Value;
                model.TipoLiquidacao = response.TipoLiquidacao.ToString();
                model.IsPessoaVinculada = response.isPessoaVinculada;
                model.Carteira = response.CodigoCarteira;
                model.IsClienteBroker = response.isClienteBroker;

                //exibe model
                this._view.ExibirDadosCliente(model);
            }
            else
            {
                //incluido para limpar dados antigos da model - esertorio - 200804071549 - ref issue ID0002038
                //limpa model
                model.CodigoCliente = null;
                model.CodigoDigitoCliente = null;
                model.NomeCliente = null;
                model.ComplementoNomeCliente = null;
                model.PercentualAcrescismoReducao = null;
                model.ContaMae = null;
                model.TipoLiquidacao = null;
                model.IsPessoaVinculada = null;
                model.Carteira = null;

                //avisa falta de resultado
                this._view.ExibirClienteNaoEncontrado(); //incluido - esertorio - 200804071124 - ref issue ID0002038
            }

        }

        #endregion CarregarCliente

        #region CarregarEmissor

        /// <summary>
        /// Carregar os Emissores por Cliente
        /// </summary>
        /// <param name="model"></param>
        /// <user>mazevedo</user>
        public void CarregarEmissor(ModelManutencaoOrdens model)
        {
            BindingList<EmissorOrdemResponse> retorno = null; //inicializar com nulo para que o metodo de exibição perceba que retornou vazio - esertorio - 200804071545 - ref issue ID0002038
            ConsultarEmissorOrdemRequest request = null;

            try
            {
                if (model.CodigoCliente != null) //incluido - se houver chave para consulta - esertorio - 200804071547 - ref issue ID0002038
                {
                    this._comunicacaoCliente = new Cliente();

                    request = new ConsultarEmissorOrdemRequest();
                    request.CodigoCliente = model.CodigoCliente;
                    request.Apelido = model.ApelidoCliente; //incluido - esertorio - 200804032048 - ref issue ID0002645

                    //TODO:ARQVPC - esertorio - 200804071544
                    retorno = this._comunicacaoCliente.ConsultarEmissorOrdem(request);
                }
            }
            catch (ClientException ex)
            {
                this.HandleException(ex);                
            }
            catch (ClientValidationException ex)
            {
                this.HandleException(ex);                
            }
            catch (ClientCommunicationException ex)
            {
                this.HandleException(ex);                
            }
            catch (ClientGeneralException ex)
            {
                this.HandleException(ex);
            }
            catch (Exception ex)
            {
                this.HandleException(ex);
            }

            if (retorno != null && retorno.Count > 0) //incluido verificacao Count>0 - esertorio - 200804071715 - ref issue ID002038
                this._view.ExibirEmissor(retorno);
           else                
                this._view.ExibirEmissorNaoEncontrado(false); //incluido - esertorio - 200804071638 - ref issue ID0002038

        }

        #endregion CarregarEmissor

        #region CarregarFinanciamentoPOP

        /// <summary>
        /// CarregarFinanciamentoPOP
        /// </summary>
        /// <param name="model"></param>
        /// <user>hpereira</user>
        public void CarregarFinanciamentoPOP(ModelManutencaoOrdens model)
        {
            BindingList<FinanciamentoEstrategiaPOPResponse> retorno = new BindingList<FinanciamentoEstrategiaPOPResponse>(); //alterado - esertorio - 200804152134 - ref issue ID0003161
            BindingList<ModelManutencaoOrdens> listModel = null;
            ConsultarOrdensFinanciamentoPOPRequest request = null;

            try
            {
                if (model != null) //incluido - esertorio - 200804152134 - ref issue ID0003161
                {
                    this._comunicacaoOrdem = new Ordem();
                    listModel = new BindingList<ModelManutencaoOrdens>();
                    request = new ConsultarOrdensFinanciamentoPOPRequest();

                    request.DataOrdem = model.DataOrdem.Value;
                    request.NumeroOrdem = model.Numero.Value;
                    request.NumeroOrdemSequencia = model.NumeroSubSequencia.Value;
                    request.SituacaoOrdem = model.Situacao;

                    retorno = this._comunicacaoOrdem.ConsultarOrdensFinancioamentoPOP(request);
                }
            }
            catch (ClientException ex)
            {
                this.HandleException(ex);                
            }
            catch (ClientValidationException ex)
            {
                this.HandleException(ex);                
            }
            catch (ClientCommunicationException ex)
            {
                this.HandleException(ex);                
            }
            catch (ClientGeneralException ex)
            {
                this.HandleException(ex);
            }
            catch (Exception ex)
            {
                this.HandleException(ex);
            }

            listModel = TranslateFinanciamentoPOPDeResposeListParaModelList(retorno); //incluido para simplificar - esertorio - 200804141141 - ref issue ID0003162

            this._view.ExibirFinanciamentoPOP(listModel, 0);
            this._view.ExibirFinanciamentoPOPGrid(); //incluido - esertorio - 200804231758 - ref issue ID0003284
        }

        /// <summary>
        /// Data : 14/04/2008
        /// Autor: Eduardo Sertorio
        /// Obs. : Criacao do metodo para simplificar metodo (CarregarFinanciamentoPOP) - esertorio - 200804141139 - ref issue ID0003162
        /// </summary>
        /// <param name="retorno"></param>
        /// <returns></returns>
        public BindingList<ModelManutencaoOrdens> TranslateFinanciamentoPOPDeResposeListParaModelList(BindingList<FinanciamentoEstrategiaPOPResponse> retorno)
        {
            BindingList<ModelManutencaoOrdens> listModel = new BindingList<ModelManutencaoOrdens>();

            if (retorno != null && retorno.Count > 0)
            {
                foreach (FinanciamentoEstrategiaPOPResponse itemResponse in retorno)
                {
                    ModelManutencaoOrdens modelAux = TranslateFinanciamentoPOPDeResposeParaModel(itemResponse); //incluido para simplificar - esertorio - 200804011728 //alterado - esertorio - 200804031828

                    listModel.Add(modelAux);
                }
            }

            return listModel;
        }

        /// <summary>
        /// Data : 01/04/2008
        /// Autor: Eduardo Sertorio
        /// Obs. : Criacao do metodo para simplificar metodo CarregarFinanciamentoPOP
        /// 
        /// Data : 03/04/2008
        /// Autor: Eduardo Sertorio
        /// Obs. : Renomear e ajustar assinatura de entrada e saida
        /// 
        /// Data : 12/04/2008
        /// Autor: Eduardo Sertorio
        /// Obs. : Renomeado de (CarregarFinanciamentoPOPDeResposeParaModel) para (TranslateFinanciamentoPOPDeResposeParaModel)
        /// </summary>
        /// <param name="response"></param>
        /// <param name="model"></param>
        public ModelManutencaoOrdens TranslateFinanciamentoPOPDeResposeParaModel(FinanciamentoEstrategiaPOPResponse response)
        {
            if (response == null)
                return null;

            ModelManutencaoOrdens model = new ModelManutencaoOrdens();

            model.DataOrdem = response.DataOrdem; //incluido - esertorio - 200804231532 - ref issue ID0003560

            model.Numero = response.NumeroOrdem; //incluido - esertorio - 200804231532 - ref issue ID0003560

            model.NumeroSubSequencia = response.NumeroOrdemSequencia; //incluido - esertorio - 200804231532 - ref issue ID0003560

            model.NumeroOrdemOriginal = response.NumeroOrdemOriginal; //incluido - esertorio - 200804231532 - ref issue ID0003560

            model.Situacao = response.Situacao; //incluido - esertorio - 200804231532 - ref issue ID0003560

            if (response.TipoMercado.HasValue) //incluido (.HasValue) - esertorio - 200804121836 - ref issue ID0002866
            {
                switch (response.TipoMercado.Value) //incluido (.Value) - esertorio - 200804121836 - ref issue ID0002866
                {
                    case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Vista:
                        model.TipoMercado = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Vista;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.OpcaoCompra:
                        model.TipoMercado = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.OpcaoCompra;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.OpcaoVenda:
                        model.TipoMercado = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.OpcaoVenda;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.ExercicioOpcaoCompra:
                        model.TipoMercado = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.ExercicioOpcaoCompra;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.ExercicioOpcaoVenda:
                        model.TipoMercado = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.ExercicioOpcaoVenda;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Fracionado:
                        model.TipoMercado = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Fracionado;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Estruturado:
                        model.TipoMercado = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Estruturado;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Leilao:
                        model.TipoMercado = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Leilao;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Termo:
                        model.TipoMercado = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Termo;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.LeilaoNaoCotados:
                        model.TipoMercado = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.LeilaoNaoCotados;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Futuro:
                        model.TipoMercado = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Futuro;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.VencimentoFuturo:
                        model.TipoMercado = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.VencimentoFuturo;
                        break;
                    default:
                        break;
                }
            }

            model.Quantidade = response.Quantidade; //excluido (.Value) - esertorio - 200804121836 - ref issue ID0002866

            model.Titulo = response.Titulo;

            if (response.NaturezaOperacao.HasValue) //incluido (.HasValue) - esertorio - 200804121836 - ref issue ID0002866
            {
                switch (response.NaturezaOperacao.Value) //incluido (.Value) - esertorio - 200804121836 - ref issue ID0002866
                {
                    case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoNaturezaOperacao.Compra:
                        model.TipoNaturezaOperacao = Sinacor.UI.Bovespa.Ordens.Common.TipoNaturezaOperacao.Compra;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoNaturezaOperacao.Venda:
                        model.TipoNaturezaOperacao = Sinacor.UI.Bovespa.Ordens.Common.TipoNaturezaOperacao.Venda;
                        break;
                    default:
                        break;
                }
            }

            model.Preco = response.Preco; //excluido (.Value) - esertorio - 200804121836 - ref issue ID0002866

            model.QuantidadeExecutadaCasada = response.QuantidadeCasada; //excluido (.Value) - esertorio - 200804121836 - ref issue ID0002866

            model.Carteira = response.CodigoCarteira; //excluido (.Value) - esertorio - 200804121836 - ref issue ID0002866

            model.VencimentoTermo = response.VencimentoTermo; //excluido (.Value) - esertorio - 200804121836 - ref issue ID0002866

            return model;
        }

        #endregion CarregarFinanciamentoPOP

        #region CarregarJustificativa

        /// <summary>
        /// CarregarJustificativa
        /// </summary>
        /// <param name="model"></param>
        /// <user>hpereira</user>
        public void CarregarJustificativa(ModelManutencaoOrdens model)
        {
            BindingList<JustificativaResponse> retorno = null;
            BindingList<ModelManutencaoOrdens> listModel = null;
            ConsultarJustificativaRequest request = null;
            ModelManutencaoOrdens modelAux = null;

            try
            {
                this._comunicacaoOrdem = new Ordem();

                request = new ConsultarJustificativaRequest();
                request.DataOrdem = model.DataOrdem.Value;
                request.NumeroOrdem = model.Numero.Value;
                request.NumeroSequenciaOrdem = model.NumeroSubSequencia.Value;

                retorno = this._comunicacaoOrdem.ConsultarJustificativas(request);
            }
            catch (ClientException ex)
            {
                if(ex.ErrorNumber!=103052) //incluido - nao exibir mensagem caso não haja resultado - esertorio - 200804011958 - ref issue ID0000018 item 2 de 2
                    this.HandleException(ex);

            }
            catch (ClientValidationException ex)
            {
                this.HandleException(ex);

            }
            catch (ClientCommunicationException ex)
            {
                this.HandleException(ex);

            }
            catch (ClientGeneralException ex)
            {
                this.HandleException(ex);
            }
            catch (Exception ex)
            {
                this.HandleException(ex);
            }

            //alterado para nao utilizar finally neste metodo, ficando igual aos outros metodos - esertorio - 200804041157
            if (retorno != null && retorno.Count > 0)
            {
                listModel = new BindingList<ModelManutencaoOrdens>();
                foreach (JustificativaResponse just in retorno)
                {
                    modelAux = new ModelManutencaoOrdens();

                    modelAux.DataOrdem = model.DataOrdem.Value; //incluido - esertorio - 200803291910 - ref issue ID0002057
                    modelAux.Numero = model.Numero.Value; //incluido - esertorio - 200803291910 - ref issue ID0002057
                    modelAux.NumeroSubSequencia = model.NumeroSubSequencia.Value; //incluido - esertorio - 200803291910 - ref issue ID0002057

                    modelAux.Justificativa = just.Texto;
                    modelAux.IdentificadorJustificativa = just.IdentificadorJustificativa;
                    modelAux.DataJustificativa = just.DataAlteracao;

                    listModel.Add(modelAux);
                }
                this._view.ExibirJustificativa(listModel, 0);
            }
            else
            {
                this._view.ExibirJustificativa(listModel, -1);
            }


                
        } 

        #endregion CarregarJustificativa

        #region CarregarObservacao

        /// <summary>
        /// CarregarObservacao
        /// </summary>
        /// <param name="model"></param>
        /// <user>hpereira</user>
        public void CarregarObservacao(ModelManutencaoOrdens model)
        {
            ObservacaoResponse retorno = null;
            ConsultarObservacaoRequest request = null;

            try
            {
                this._comunicacaoOrdem = new Ordem();

                request = new ConsultarObservacaoRequest();

                request.DataOrdem = model.DataOrdem.Value;
                request.NumeroOrdem = model.Numero.Value;
                request.SubsequenciaOrdem = model.NumeroSubSequencia.Value;

                retorno = this._comunicacaoOrdem.ConsultarObservacao(request);

            }
            catch (ClientException ex)
            {
                this.HandleException(ex);                
            }
            catch (ClientValidationException ex)
            {
                this.HandleException(ex);                
            }
            catch (ClientCommunicationException ex)
            {
                this.HandleException(ex);                
            }
            catch (ClientGeneralException ex)
            {
                this.HandleException(ex);
            }
            catch (Exception ex)
            {
                this.HandleException(ex);
            }

            if (retorno != null && retorno.Descricao != "")
            {
                this._view.ExibirObservacao(retorno.Descricao);
            }

        }

        #endregion CarregarObservacao

        #region CarregarOrdem

        /// <summary>
        /// CarregarOrdem
        /// </summary>
        /// <param name="model"></param>
        /// <user>hpereira</user>
        public void CarregarOrdem(ModelManutencaoOrdens model)
        {
            BindingList<OrdemResponse> retorno = null;
            ConsultarOrdensManutencaoOrdensRequest request = null;
            BindingList<ModelManutencaoOrdens> modelList = null;

            try
            {
                modelList = new BindingList<ModelManutencaoOrdens>();
                this._comunicacaoOrdem = new Ordem();

                request = TranslateOrdemDeModelParaRequest(model);

                retorno = this._comunicacaoOrdem.ConsultarOrdensManutencaoOrdens(request);
            }
            catch (ClientException ex)
            {
                this.HandleException(ex);
            }
            catch (ClientValidationException ex)
            {
                this.HandleException(ex);
            }
            catch (ClientCommunicationException ex)
            {
                this.HandleException(ex);
            }
            catch (ClientGeneralException ex)
            {
                this.HandleException(ex);
            }
            catch (Exception ex)
            {
                this.HandleException(ex);
            }

            modelList = TranslateOrdemDeResponseListParaModelList(retorno); //incluido para simplificar - esertorio - 200804031807

            this._view.ExibirDadosOrdem(modelList, 0);

        }

        /// <summary>
        /// Data : 03/04/2008
        /// Autor: Eduardo Sertorio
        /// Obs. : Criacao do metodo para simplificar o metodo chamador CarregarOrdem
        /// 
        /// Data : 09/04/2008
        /// Autor: Eduardo Sertorio
        /// Obs. : Renomear metodo de (CarregarOrdemDeResponseParaModelList) para (TranslateOrdemDeResponseListParaModelList)
        /// </summary>
        /// <param name="retorno"></param>
        /// <returns></returns>
        public BindingList<ModelManutencaoOrdens> TranslateOrdemDeResponseListParaModelList(BindingList<OrdemResponse> retorno)
        {
            BindingList<ModelManutencaoOrdens> modelList = new BindingList<ModelManutencaoOrdens>();

            if (retorno != null)
            {
                ModelManutencaoOrdens model = null;

                foreach (OrdemResponse ordemResponse in retorno)
                {
                    model = TranslateOrdemDeResponseParaModel(ordemResponse); //incluido para simplificar - esertorio - 200804011709

                    modelList.Add(model);

                    //excluido desta parte do codigo (dentro do loop) - esertorio - 200803201928 - ref issue ID0000697
                    //if (modelList != null)
                    //{
                    //    this._view.ExibirDadosOrdem(modelList, 0);
                    //}
                } //foreach (OrdemResponse response in retorno) - comentario incluido - esertorio - 200803201928 - ref issue ID0000697
            }

            return modelList;
        }

        /// <summary>
        /// Data : 01/04/2008
        /// Autor: Eduardo Sertorio
        /// Obs. : Criacao do metodo para simplificar metodo CarregarOrdem
        /// 
        /// Data : 03/04/2008
        /// Autor: Eduardo Sertorio
        /// Obs. : Ajustes na assinatura entrada e saida
        /// 
        /// Data : 09/04/2008
        /// Autor: Eduardo Sertorio
        /// Obs. : Renomeado metodo de (CarregarOrdemDeModelParaRequest) para (TranslateOrdemDeModelParaRequest)
        /// </summary>
        /// <param name="request"></param>
        /// <param name="model"></param>
        public ConsultarOrdensManutencaoOrdensRequest TranslateOrdemDeModelParaRequest(ModelManutencaoOrdens model)
        {
            if (model == null)
                return null;

            ConsultarOrdensManutencaoOrdensRequest request = new ConsultarOrdensManutencaoOrdensRequest();

            request.ApelidoCliente = model.ApelidoCliente;
            request.Bolsa = model.Bolsa;
            request.Cambio = model.ValorDolar;
            request.CodigoCarteira = model.Carteira;
            request.CodigoCliente = model.CodigoCliente;
            request.CodigoUsuarioOrdem = model.Operador;
            //if (model.DataOrdem != DateTime.MinValue) //excluido - esertorio - 200804032002 - ref issue ID0000461
                request.DataOrdem = model.DataOrdem;
            request.DataPregao = model.DataPregao;
            request.DataValidade = model.DataValidade;
            request.IndicadorLiquidacao = model.TipoLiquidacao;
            request.IndicadorOrdemAbertaAdminCon = model.IsOrdemAbertaAdminCon;

            if (model.TipoNaturezaOperacao != null)
            {
                switch (model.TipoNaturezaOperacao)
                {
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoNaturezaOperacao.Compra:
                        request.NaturezaOperacao = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoNaturezaOperacao.Compra;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoNaturezaOperacao.Venda:
                        request.NaturezaOperacao = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoNaturezaOperacao.Venda;
                        break;
                }

            }

            request.NumeroOrdem = model.Numero;
            request.NumeroOrdemOriginal = model.NumeroOrdemOriginal;
            request.NumeroOrdemSequencia = model.NumeroSubSequencia;
            request.PercentualReducaoAcrescimo = model.PercentualAcrescismoReducao;
            request.Preco = model.Preco;
            request.Quantidade = model.Quantidade;
            request.QuantidadeAnexo4 = model.QuantidadeAnexoIV;
            request.QuantidadeAnexo5 = model.QuantidadeAnexoV;
            request.Situacao = model.Situacao;
            request.TaxaFinanciamento = model.PercentualFinanciamento;
            if (model.TipoMercado != null)
            {
                switch (model.TipoMercado)
                {
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Vista:
                        request.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Vista;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.OpcaoCompra:
                        request.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.OpcaoCompra;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.OpcaoVenda:
                        request.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.OpcaoVenda;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.ExercicioOpcaoCompra:
                        request.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.ExercicioOpcaoCompra;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.ExercicioOpcaoVenda:
                        request.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.ExercicioOpcaoVenda;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Fracionado:
                        request.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Fracionado;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Estruturado:
                        request.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Estruturado;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Leilao:
                        request.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Leilao;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Termo:
                        request.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Termo;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.LeilaoNaoCotados:
                        request.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.LeilaoNaoCotados;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Futuro:
                        request.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Futuro;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.VencimentoFuturo:
                        request.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.VencimentoFuturo;
                        break;
                }
            }

            Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem? tipoOrdemAux = new Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem();

            if (model.TipoOrdem != null)
            {
                request.TipoOrdem = new BindingList<Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem>();
                foreach (Sinacor.UI.Bovespa.Ordens.Common.TipoOrdem to in model.TipoOrdem)
                {
                    tipoOrdemAux = null;
                    switch (to)
                    {
                        case Sinacor.UI.Bovespa.Ordens.Common.TipoOrdem.Administrada:
                            tipoOrdemAux = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem.Administrada;
                            break;
                        case Sinacor.UI.Bovespa.Ordens.Common.TipoOrdem.Financiamento:
                            tipoOrdemAux = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem.Financiamento;
                            break;
                        case Sinacor.UI.Bovespa.Ordens.Common.TipoOrdem.Discricionaria:
                            tipoOrdemAux = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem.Discricionaria;
                            break;
                        case Sinacor.UI.Bovespa.Ordens.Common.TipoOrdem.OnStop:
                            tipoOrdemAux = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem.OnStop;
                            break;
                        case Sinacor.UI.Bovespa.Ordens.Common.TipoOrdem.Mercado:
                            tipoOrdemAux = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem.Mercado;
                            break;
                        case Sinacor.UI.Bovespa.Ordens.Common.TipoOrdem.Limitada:
                            tipoOrdemAux = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem.Limitada;
                            break;
                        case Sinacor.UI.Bovespa.Ordens.Common.TipoOrdem.Casada:
                            tipoOrdemAux = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem.Casada;
                            break;
                        default:
                            tipoOrdemAux = null;
                            break;
                    }
                    if (tipoOrdemAux != null)
                    {
                        request.TipoOrdem.Add(tipoOrdemAux.Value);
                    }
                }
            }

            request.Titulo = model.Titulo;
            request.ValorFinanciado = model.ValorFinanciamento;
            request.VencimentoTermo = model.VencimentoTermo;

            return request;
        }

        /// <summary>
        /// Data : 01/04/2008
        /// Autor: Eduardo Sertorio
        /// Obs. : Criacao do metodo para simplificar metodo CarregarOrdem
        /// 
        /// Data : 03/04/2008
        /// Autor: Eduardo Sertorio
        /// Obs. : Ajustes de assinatura na entrada e saida
        /// 
        /// Data : 09/04/2008
        /// Autor: Eduardo Sertorio
        /// Obs. : Renomear metodo de (CarregarOrdemDeResponseParaModel) para (TranslateOrdemDeResponseParaModel)
        /// </summary>
        /// <param name="model"></param>
        /// <param name="response"></param>
        public ModelManutencaoOrdens TranslateOrdemDeResponseParaModel(OrdemResponse response)
        {
            if (response == null)
                return null;

            ModelManutencaoOrdens model = new ModelManutencaoOrdens();

            model.ApelidoCliente = response.ApelidoCliente;
            model.CodigoCliente = response.CodigoCliente;
            model.CodigoDigitoCliente = response.DigitoCliente;
            model.Bolsa = response.Bolsa;
            model.ValorDolar = response.Cambio;
            model.ContaMae = response.CodigoBroker;
            model.IndicadorOrdemAbertaAdminCon = response.IndicadorOrdemAbertaAdminCon;
            model.Carteira = response.CodigoCarteira;
            model.Operador = response.CodigoUsuarioOrdem;
            model.ComplementoNomeCliente = response.ComplementoNomeCliente;
            model.DataOrdem = response.DataOrdem;
            model.DataPregao = response.DataPregao;
            model.DataValidade = response.DataValidade;
            model.TipoLiquidacao = response.IndicadorLiquidacao;
            model.IsOrdemAbertaAdminCon = response.IndicadorOrdemAbertaAdminCon;
            model.IsPessoaVinculada = response.IndicadorPessoaVinculada;

            if (response.TipoMercado != null)
            {
                switch (response.TipoMercado.Value)
                {
                    case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Vista:
                        model.TipoMercado = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Vista;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.OpcaoCompra:
                        model.TipoMercado = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.OpcaoCompra;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.OpcaoVenda:
                        model.TipoMercado = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.OpcaoVenda;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.ExercicioOpcaoCompra:
                        model.TipoMercado = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.ExercicioOpcaoCompra;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.ExercicioOpcaoVenda:
                        model.TipoMercado = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.ExercicioOpcaoVenda;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Fracionado:
                        model.TipoMercado = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Fracionado;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Estruturado:
                        model.TipoMercado = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Estruturado;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Leilao:
                        model.TipoMercado = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Leilao;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Termo:
                        model.TipoMercado = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Termo;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.LeilaoNaoCotados:
                        model.TipoMercado = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.LeilaoNaoCotados;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Futuro:
                        model.TipoMercado = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Futuro;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.VencimentoFuturo:
                        model.TipoMercado = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.VencimentoFuturo;
                        break;
                }
            }
            model.NomeCliente = response.NomeCliente;
            model.Emissor = response.NomeEmissorOrdem;
            model.Numero = response.Numero;
            if (response.NumeroOrdemOriginal != null)
                model.NumeroOrdemOriginal = response.NumeroOrdemOriginal.Value;
            model.NumeroSubSequencia = response.NumeroOrdemSequencia;
            model.PercentualAcrescismoReducao = response.PercentualReducaoAcrescimo;
            model.Preco = response.Preco;
            model.Quantidade = response.Quantidade;
            model.QuantidadeAnexoIV = response.QuantidadeAnexo4;
            model.QuantidadeAnexoV = response.QuantidadeAnexo5;
            model.QuantidadeExecutadaCasada = response.QuantidadeCasada;
            model.Situacao = response.Situacao;
            model.PercentualFinanciamento = response.TaxaFinanciamento;
            if (response.NaturezaOperacao != null)
            {
                switch (response.NaturezaOperacao.Value)
                {
                    case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoNaturezaOperacao.Compra:
                        model.TipoNaturezaOperacao = Sinacor.UI.Bovespa.Ordens.Common.TipoNaturezaOperacao.Compra;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoNaturezaOperacao.Venda:
                        model.TipoNaturezaOperacao = Sinacor.UI.Bovespa.Ordens.Common.TipoNaturezaOperacao.Venda;
                        break;
                }
            }

            Sinacor.UI.Bovespa.Ordens.Common.TipoOrdem tipoOrdemModel = new Sinacor.UI.Bovespa.Ordens.Common.TipoOrdem();

            foreach (Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem tipoOrdem in response.TipoOrdem)
            {
                switch (tipoOrdem)
                {
                    case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem.Mercado:
                        tipoOrdemModel = Sinacor.UI.Bovespa.Ordens.Common.TipoOrdem.Mercado;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem.Casada:
                        tipoOrdemModel = Sinacor.UI.Bovespa.Ordens.Common.TipoOrdem.Casada;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem.Administrada:
                        tipoOrdemModel = Sinacor.UI.Bovespa.Ordens.Common.TipoOrdem.Administrada;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem.Discricionaria:
                        tipoOrdemModel = Sinacor.UI.Bovespa.Ordens.Common.TipoOrdem.Discricionaria;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem.Limitada:
                        tipoOrdemModel = Sinacor.UI.Bovespa.Ordens.Common.TipoOrdem.Limitada;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem.Financiamento:
                        tipoOrdemModel = Sinacor.UI.Bovespa.Ordens.Common.TipoOrdem.Financiamento;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem.OnStop:
                        tipoOrdemModel = Sinacor.UI.Bovespa.Ordens.Common.TipoOrdem.OnStop;
                        break;
                }
                model.TipoOrdem.Add(tipoOrdemModel);
            }
            model.Titulo = response.Titulo;
            model.ValorFinanciamento = response.ValorFinanciado;
            model.ValorOrdem = response.ValorOrdem;
            model.VencimentoTermo = response.VencimentoTermo;

            if (response.BloqueioCliente != null)
                model.MensagemBloqueioCliente = response.BloqueioCliente._descricaoBloqueio; //incluido - esertorio - 200804162145 - ref issue ID0003210

            if (response.MensagemValidacao != null)
                model.MensagemValidacao = response.MensagemValidacao.Descricao; //incluido - esertorio - 200804162145 - ref issue ID0003210

            return model;
        }

        #endregion CarregarOrdem

        #region CarregarTitulo

        /// <summary>
        ///     Carrega o texto do título para a view
        /// Data : 20/03/2008
        /// Autor: Eduardo Sertorio - esertorio
        /// Obs. : Adequacao ARQVPC
        /// </summary>
        /// <param name="titulo"></param>
        /// <user>rdorta</user>
        public void ObterCodigoTitulo(ModelTitulo titulo) //alterado de object para ModelTitulo - esertorio - 200803202201
        {
            //this._view.ExibirCodigoTitulo(titulo.Codigo); //alterado de retorno para titulo - esertorio - 200803202201
            this._view.ExibirDadosTitulo(titulo); //incluido - esertorio - 200803251557 - ref issue ID0001485
        }

        /// <summary>
        /// Carregar um Titulo
        /// 
        /// Data : 20/03/2008
        /// Autor: Eduardo Sertorio - esertorio
        /// Obs. : Adequacao ARQVPC - ref issue ID0001213 e ID0001110
        /// </summary>
        /// <param name="model"></param>
        /// <user>mazevedo</user>
        public void CarregarTitulo(ModelManutencaoOrdens model)
        {
            ModelTitulo response = null;
            ModelTitulo request = null;

            try
            {
                this._comunicacaoTitulo = new Titulo();

                request = new ModelTitulo();
                request.Codigo = model.Titulo;
                request.DataPregao = model.DataOrdem;

                response = this._comunicacaoTitulo.ConsultarTituloCodigo(request); //20080412 17:12 - Renomeado de (ConsultarTitulosCodigo) para (ConsultarTituloCodigo)- DMilanez.7Comm
            }
            catch (ClientException ex)
            {
                this.HandleException(ex);
                
            }
            catch (ClientValidationException ex)
            {
                this.HandleException(ex);
                
            }
            catch (ClientCommunicationException ex)
            {
                this.HandleException(ex);
                
            }
            catch (ClientGeneralException ex)
            {
                this.HandleException(ex);
            }
            catch (Exception ex)
            {
                this.HandleException(ex);
            }

            if (response != null)
                this._view.ExibirDadosTitulo(response);
            else
                this._view.ExibirTituloNaoEncontrado();

        } 
        #endregion

        #region ExcluirOrdem
        /// <summary>
        /// Excluir Ordens
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        /// <user>hpereira</user>
        public void ExcluirOrdem(ModelManutencaoOrdens model)
        {

            ExcluirOrdemRequest request = null;
            try
            {
                this._comunicacaoOrdem = new Ordem();
                request = new ExcluirOrdemRequest();

                request.NumeroOrdem = model.Numero.Value;
                request.NumeroOrdemSequencia = model.NumeroSubSequencia.Value;
                request.DataOrdem = model.DataOrdem.Value;
                request.TextoJustificativa = model.Justificativa;

                if (this._comunicacaoOrdem.ExcluirOrdem(request)) 
                {
                    this._view.ExibirMensagem(Mensagem.ExcluidocomSucesso);
                    this._view.NovaBusca();
                }
                else
                {
                    this._view.ExibirMensagem(Mensagem.FalhaExclusaoOrdem);
                }

            }
            catch (ClientException ex)
            {
                this.HandleException(ex);
            }
            catch (ClientValidationException ex)
            {
                this.HandleException(ex);
            }
            catch (ClientCommunicationException ex)
            {
                this.HandleException(ex);
            }
            catch (ClientGeneralException ex)
            {
                this.HandleException(ex);
            }
            catch (Exception ex)
            {
                this.HandleException(ex);
            }
            
           
        } 
        #endregion

        #region ExcluirFinanciamentoPOP

        /// <summary>
        /// ExcluirFinanciamentoPOP
        /// </summary>
        /// <param name="model"></param>
        /// <user>hpereira</user>
        public void ExcluirFinanciamentoPOP(ModelManutencaoOrdens model)
        {
            bool sucesso = false; //incluido - esertorio - 200805271900 - ref issue ID0003678
            ExcluirOrdemFinanciamentoPOPRequest request = null; //renomeado de (CancelarOrdemFinanciamentoPOP) para (ExcluirOrdemFinanciamentoPOP) - esertorio - 200804231656 - ref issue ID0003560
            OrdemFinanciamentoPOPResponse retornoMsg = null;
            try
            {
                this._comunicacaoOrdem = new Ordem();

                request = new ExcluirOrdemFinanciamentoPOPRequest(); //renomeado de (CancelarOrdemFinanciamentoPOP) para (ExcluirOrdemFinanciamentoPOP) - esertorio - 200804231656 - ref issue ID0003560

                request.NumeroOrdem = model.Numero;
                request.NumeroOrdemSequencia = model.NumeroSubSequencia;
                request.DataOrdem = model.DataOrdem;

                retornoMsg = this._comunicacaoOrdem.ExcluirOrdensFinanciamentoPOP(request); //renomeado de (CancelarOrdemFinanciamentoPOP) para (ExcluirOrdensFinanciamentoPOP) - esertorio - 200804231656 - ref issue ID0003560
                sucesso = true; //incluido - esertorio - 200805271900 - ref issue ID0003678
            }
            catch (ClientException ex)
            {
                this.HandleException(ex);
                
            }
            catch (ClientValidationException ex)
            {
                this.HandleException(ex);
                
            }
            catch (ClientCommunicationException ex)
            {
                this.HandleException(ex);
                
            }
            catch (ClientGeneralException ex)
            {
                this.HandleException(ex);
            }
            catch (Exception ex)
            {
                this.HandleException(ex);
            }

            if (retornoMsg != null)
            {
                if (retornoMsg.MensagemCasamento != null && !String.IsNullOrEmpty(retornoMsg.MensagemCasamento.Descricao)) //alterado para testar nulo - esertorio - 200805271833 - ref issue ID0003678
                    this._view.ExibirMensagem(retornoMsg.MensagemCasamento.Descricao);

                if (retornoMsg.MensagemVerificacaoCompliance != null && !String.IsNullOrEmpty(retornoMsg.MensagemVerificacaoCompliance.Descricao)) //alterado para testar nulo - esertorio - 200805271833 - ref issue ID0003678
                    this._view.ExibirMensagem(retornoMsg.MensagemVerificacaoCompliance.Descricao);

                if (retornoMsg.MensagemVerificacaoSaldoNegociavel != null && !String.IsNullOrEmpty(retornoMsg.MensagemVerificacaoSaldoNegociavel.Descricao)) //alterado para testar nulo - esertorio - 200805271833 - ref issue ID0003678
                    this._view.ExibirMensagem(retornoMsg.MensagemVerificacaoSaldoNegociavel.Descricao);

                if (retornoMsg.MensagemBloqueio != null && !String.IsNullOrEmpty(retornoMsg.MensagemBloqueio.Descricao)) //alterado para testar nulo - esertorio - 200805271833 - ref issue ID0003678
                    this._view.ExibirMensagem(retornoMsg.TipoBloqueio.Value + ": " + retornoMsg.MensagemBloqueio.Descricao);
            }

            if (sucesso) //incluido - esertorio - 200805271907 - ref issue ID0003678
            {
                this.RealizarCasamentoOrdem(model);
                this.CarregarFinanciamentoPOP(model);
            }

        } 
        #endregion

        #region RealizarCasamentoOrdem

        /// <summary>
        /// RealizarCasamentoOrdem
        /// </summary>
        /// <param name="model"></param>
        /// <user>hpereira</user>
        public void RealizarCasamentoOrdem(ModelManutencaoOrdens model)
        {
            RealizarCasamentoResponse retorno = null;
            RealizarCasamentoOrdemFinanciamentoPOPRequest request = null;

            try
            {
                this._comunicacaoOrdem = new Ordem();

                request = new RealizarCasamentoOrdemFinanciamentoPOPRequest();
                
                request.DataOrdem = model.DataOrdem.Value;
                request.NumeroOrdem = model.Numero.Value;
                request.NumeroOrdemSequencia = model.NumeroSubSequencia.Value;
                request.DataPregao = model.DataPregao;

                retorno = this._comunicacaoOrdem.RealizarCasamentoOrdensFinanciamentoPOP(request);

            }
            catch (ClientException ex)
            {
                this.HandleException(ex);
                
            }
            catch (ClientValidationException ex)
            {
                this.HandleException(ex);
                
            }
            catch (ClientCommunicationException ex)
            {
                this.HandleException(ex);
                
            }
            catch (ClientGeneralException ex)
            {
                this.HandleException(ex);
            }
            catch (Exception ex)
            {
                this.HandleException(ex);
            }

            if (retorno != null) //corrigido de (==) para (!=) - esertorio - 200804231730 - ref issue ID0003560
            {
                if (!String.IsNullOrEmpty(retorno.MensagemCasamento.Descricao)) //corrigido - esertorio - 200804231730 - ref issue ID0003560
                    this._view.ExibirMensagem(retorno.MensagemCasamento.Descricao + " [" + retorno.MensagemCasamento.Codigo.ToString() + "]"); //alterado - esertorio - 200804231730 - ref issue ID0003560

                if (!String.IsNullOrEmpty(retorno.MensagemVerificacaoCompliance.Descricao)) //corrigido - esertorio - 200804231730 - ref issue ID0003560
                    this._view.ExibirMensagem(retorno.MensagemVerificacaoCompliance.Descricao + " [" + retorno.MensagemVerificacaoCompliance.Codigo.ToString() + "]");

                if (!String.IsNullOrEmpty(retorno.MensagemVerificacaoSaldo.Descricao)) //corrigido - esertorio - 200804231730 - ref issue ID0003560
                    this._view.ExibirMensagem(retorno.MensagemVerificacaoSaldo.Descricao + " [" + retorno.MensagemVerificacaoSaldo.Codigo.ToString() + "]");
            }
            else
            {
                this._view.ExibirMensagem(Mensagem.CasadaComSucesso);
            }
        } 

        #endregion

        #region SalvarOrdem

        /// <summary>
        /// Salvar Ordens
        /// </summary>
        /// <param name="modelOrdem"></param>
        /// <returns></returns>
        ///<user>hepereira</user>
        public bool SalvarOrdem(ModelManutencaoOrdens modelOrdem)
        {
            bool retorno = false;
            OrdemResponse response = null;

            try
            {
                this._comunicacaoOrdem = new Ordem();

                if (modelOrdem.IsInsercao)
                {
                    IncluirOrdemRequest request = new IncluirOrdemRequest();

                    CarregarIncluirOrdemRequest(modelOrdem, request);

                    response = this._comunicacaoOrdem.IncluirOrdem(request);

                    retorno = true; //incluido - esertorio - 2008041151609 - ref issue ID0003161
                }
                else
                {
                    AlterarOrdemRequest request = new AlterarOrdemRequest();

                    CarregarAlterarOrdemRequest(modelOrdem, request);

                    //complemento necessario para alteração de ordem
                    request.DataOrdem = modelOrdem.DataOrdem;
                    request.NumeroOrdem = modelOrdem.Numero;
                    request.NumeroOrdemSequencia = modelOrdem.NumeroSubSequencia;
                    request.TextoJustificativa = modelOrdem.Justificativa;

                    response = this._comunicacaoOrdem.AlterarOrdem(request); //alterado para receber retorno da chamada - esertorio - 200804281105 - ref issue ID0003694

                    retorno = true; //incluido - esertorio - 2008041151609 - ref issue ID0003161
                }
            }
            catch (ClientException ex)
            {
                this.HandleException(ex);                
            }
            catch (ClientValidationException ex)
            {
                this.HandleException(ex);                
            }
            catch (ClientCommunicationException ex)
            {
                this.HandleException(ex);                
            }
            catch (ClientGeneralException ex)
            {
                this.HandleException(ex);
            }
            catch (Exception ex)
            {
                this.HandleException(ex);
            }

            if (retorno)
            {
                //if (modelOrdem.IsInsercao)
                //{
                    modelOrdem = TranslateOrdemDeResponseParaModel(response); //incluido - esertorio - 2008041151609 - ref issue ID0003161

                    if (!String.IsNullOrEmpty(modelOrdem.MensagemBloqueioCliente)) //incluido - esertorio - 200804162145 - ref issue ID0003210
                    {
                        this._view.ExibirMensagem(modelOrdem.MensagemBloqueioCliente); //incluido - esertorio - 200804162145 - ref issue ID0003210

                        if (!String.IsNullOrEmpty(modelOrdem.MensagemValidacao))
                            this._view.ExibirMensagem(modelOrdem.MensagemValidacao); //incluido - esertorio - 200804162145 - ref issue ID0003210

                        retorno = false; //incluido - esertorio - 200804162145 - ref issue ID0003210
                    }
                    else
                    {
                        //alterado - movido para antes da mensagem de sucesso - esertorio - 200804281154 - ref issue ID0003694
                        if (!String.IsNullOrEmpty(modelOrdem.MensagemValidacao))
                            this._view.ExibirMensagem(modelOrdem.MensagemValidacao); //incluido - esertorio - 200804162145 - ref issue ID0003210

                        this._view.ExibirMensagem(Mensagem.SalvocomSucesso); //movido para fora do (if) - esertorio - 200804141117 - ref issue ID0003161

                        this.CarregarOrdem(modelOrdem); //incluido - esertorio - 2008041151609 - ref issue ID0003161
                    }
                //}
                //else
                //{
                //    if (!String.IsNullOrEmpty(modelOrdem.MensagemBloqueioCliente))
                //    {
                //        this._view.ExibirMensagem(modelOrdem.MensagemBloqueioCliente); //incluido - esertorio - 200804162145 - ref issue ID0003210
                //        retorno = false; //incluido - esertorio - 200804162145 - ref issue ID0003210
                //    }
                //    this._view.ExibirMensagem(Mensagem.SalvocomSucesso); //movido para fora do (if) - esertorio - 200804141117 - ref issue ID0003161
                //    if (!String.IsNullOrEmpty(modelOrdem.MensagemValidacao))
                //        this._view.ExibirMensagem(modelOrdem.MensagemValidacao); //incluido - esertorio - 200804162145 - ref issue ID0003210
                //}
            }

            return retorno;
        } 
        #endregion

        #region CarregarModelManutencaoOrdem

        /// <summary>
        /// Data : 18/02/2008
        /// Autor: Eduardo Sertorio
        /// Obs. : Criacao
        /// 
        /// Data : 01/04/2008
        /// Autor: Eduardo Sertorio
        /// Obs. : Sincronizacao com metodo CarregarAlterarOrdemRequest - ref issue ID0000215 - 200804012100
        /// 
        /// Data : 03/04/2008
        /// Autor: Eduardo Sertorio
        /// Obs. : Renomeado e ajustada assinatura de entrada e saida
        /// 
        /// Data : 04/04/2008
        /// Autor: Eduardo Sertorio
        /// Obs. : Re-ajustada assinatura de entrada e saida
        /// </summary>
        /// <param name="request"></param>
        /// <param name="model"></param>
        public void CarregarIncluirOrdemRequest(ModelManutencaoOrdens fromModel, IncluirOrdemRequest toRequest)
        {
            //se model de entrada esta nulo
            if (fromModel == null)
                //nada a atribuir para request de saida
                return;

            toRequest.Situacao = fromModel.Situacao;

            toRequest.NumeroOrdemOriginal = fromModel.NumeroOrdemOriginal;

            if (fromModel.TipoNaturezaOperacao != null)
            {
                switch (fromModel.TipoNaturezaOperacao)
                {
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoNaturezaOperacao.Compra:
                        toRequest.NaturezaOperacao = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoNaturezaOperacao.Compra;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoNaturezaOperacao.Venda:
                        toRequest.NaturezaOperacao = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoNaturezaOperacao.Venda;
                        break;
                }
            }

            if (fromModel.TipoMercado != null)
            {
                switch (fromModel.TipoMercado)
                {
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Estruturado:
                        toRequest.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Estruturado;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.ExercicioOpcaoCompra:
                        toRequest.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.ExercicioOpcaoCompra;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.ExercicioOpcaoVenda:
                        toRequest.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.ExercicioOpcaoVenda;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Fracionado:
                        toRequest.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Fracionado;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Futuro:
                        toRequest.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Futuro;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Leilao:
                        toRequest.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Leilao;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.LeilaoNaoCotados:
                        toRequest.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.LeilaoNaoCotados;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.OpcaoCompra:
                        toRequest.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.OpcaoCompra;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.OpcaoVenda:
                        toRequest.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.OpcaoVenda;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Termo:
                        toRequest.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Termo;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.VencimentoFuturo:
                        toRequest.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Futuro;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Vista:
                        toRequest.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Vista;
                        break;
                }
            }

            if (fromModel.TipoOrdem != null)
            {
                Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem tipoOrdemAuxiliar = new Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem();

                toRequest.TipoOrdem = new BindingList<Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem>();

                foreach (Sinacor.UI.Bovespa.Ordens.Common.TipoOrdem to in fromModel.TipoOrdem)
                {
                    switch (to)
                    {
                        case Sinacor.UI.Bovespa.Ordens.Common.TipoOrdem.Administrada:
                            tipoOrdemAuxiliar = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem.Administrada;
                            break;
                        case Sinacor.UI.Bovespa.Ordens.Common.TipoOrdem.Financiamento:
                            tipoOrdemAuxiliar = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem.Financiamento;
                            break;
                        case Sinacor.UI.Bovespa.Ordens.Common.TipoOrdem.Discricionaria:
                            tipoOrdemAuxiliar = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem.Discricionaria;
                            break;
                        case Sinacor.UI.Bovespa.Ordens.Common.TipoOrdem.OnStop:
                            tipoOrdemAuxiliar = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem.OnStop;
                            break;
                        case Sinacor.UI.Bovespa.Ordens.Common.TipoOrdem.Mercado:
                            tipoOrdemAuxiliar = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem.Mercado;
                            break;
                        case Sinacor.UI.Bovespa.Ordens.Common.TipoOrdem.Limitada:
                            tipoOrdemAuxiliar = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem.Limitada;
                            break;
                        case Sinacor.UI.Bovespa.Ordens.Common.TipoOrdem.Casada:
                            tipoOrdemAuxiliar = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem.Casada;
                            break;
                    }
                    toRequest.TipoOrdem.Add(tipoOrdemAuxiliar);
                }
            }

            toRequest.CodigoCliente = fromModel.CodigoCliente;
            toRequest.PercentualCorretagem = fromModel.PercentualAcrescismoReducao;
            toRequest.IndicadorPessoaVinculada = fromModel.IsPessoaVinculada;
            toRequest.ContaMae = fromModel.ContaMae;
            toRequest.Carteira = fromModel.Carteira;
            toRequest.TipoLiquidacao = fromModel.TipoLiquidacao;
            toRequest.VencimentoTermo = fromModel.VencimentoTermo;
            toRequest.Titulo = fromModel.Titulo;
            toRequest.NomeEmissorOrdem = fromModel.Emissor;
            toRequest.Cambio = fromModel.ValorDolar;
            toRequest.ValorFinanciado = fromModel.ValorFinanciamento;
            toRequest.TaxaFinanciamento = fromModel.PercentualFinanciamento;
            toRequest.Quantidade = fromModel.Quantidade;
            toRequest.QuantidadeAnexo4 = fromModel.QuantidadeAnexoIV;
            toRequest.QuantidadeAnexo5 = fromModel.QuantidadeAnexoV;
            toRequest.Preco = fromModel.Preco;
            toRequest.Bolsa = fromModel.Bolsa;
            toRequest.DataValidade = fromModel.DataValidade;
            toRequest.CodigoOperador = fromModel.Operador;
            toRequest.IndicadorOrdemAbertaAdminCon = fromModel.IndicadorOrdemAbertaAdminCon; //confirmacao que model(admincon) esta sendo enviado ao servido(request) IncluirOrdem - esertorio - 200804041624 - ref issue ID0000031

        }

        //CRIADO COMO COPIA DO METODO CarregarIncluirOrdemRequest
        /// <summary>
        /// Data : 18/02/2008
        /// Autor: Eduardo Sertorio
        /// Obs. : Criacao
        /// 
        /// Data : 01/04/2008
        /// Autor: Eduardo Sertorio
        /// Obs. : Sincronizacao com metodo CarregarIncluirOrdemRequest - ref issue ID0000215 - 200804012100
        /// 
        /// Data : 03/04/2008
        /// Autor: Eduardo Sertorio
        /// Obs. : Renomeado e ajustada assinatura de entrada e saida
        /// 
        /// Data : 04/04/2008
        /// Autor: Eduardo Sertorio
        /// Obs. : Re-ajustada assinatura de entrada e saida
        /// </summary>
        /// <param name="request"></param>
        /// <param name="model"></param>
        public void CarregarAlterarOrdemRequest(ModelManutencaoOrdens fromModel, AlterarOrdemRequest toRequest)
        {
            //se model de entrada esta nulo
            if (fromModel == null)
                //nada a atribuir para request de saida
                return;

            toRequest.Situacao = fromModel.Situacao;

            toRequest.NumeroOrdemOriginal = fromModel.NumeroOrdemOriginal;

            if (fromModel.TipoNaturezaOperacao != null)
            {
                switch (fromModel.TipoNaturezaOperacao)
                {
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoNaturezaOperacao.Compra:
                        toRequest.NaturezaOperacao = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoNaturezaOperacao.Compra;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoNaturezaOperacao.Venda:
                        toRequest.NaturezaOperacao = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoNaturezaOperacao.Venda;
                        break;
                }
            }

            if (fromModel.TipoMercado != null)
            {
                switch (fromModel.TipoMercado)
                {
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Estruturado:
                        toRequest.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Estruturado;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.ExercicioOpcaoCompra:
                        toRequest.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.ExercicioOpcaoCompra;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.ExercicioOpcaoVenda:
                        toRequest.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.ExercicioOpcaoVenda;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Fracionado:
                        toRequest.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Fracionado;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Futuro:
                        toRequest.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Futuro;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Leilao:
                        toRequest.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Leilao;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.LeilaoNaoCotados:
                        toRequest.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.LeilaoNaoCotados;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.OpcaoCompra:
                        toRequest.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.OpcaoCompra;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.OpcaoVenda:
                        toRequest.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.OpcaoVenda;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Termo:
                        toRequest.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Termo;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.VencimentoFuturo:
                        toRequest.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Futuro;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Vista:
                        toRequest.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Vista;
                        break;
                }
            }

            if (fromModel.TipoOrdem != null)
            {
                Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem tipoOrdemAuxiliar = new Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem();

                toRequest.TipoOrdem = new BindingList<Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem>();

                foreach (Sinacor.UI.Bovespa.Ordens.Common.TipoOrdem to in fromModel.TipoOrdem)
                {
                    switch (to)
                    {
                        case Sinacor.UI.Bovespa.Ordens.Common.TipoOrdem.Administrada:
                            tipoOrdemAuxiliar = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem.Administrada;
                            break;
                        case Sinacor.UI.Bovespa.Ordens.Common.TipoOrdem.Financiamento:
                            tipoOrdemAuxiliar = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem.Financiamento;
                            break;
                        case Sinacor.UI.Bovespa.Ordens.Common.TipoOrdem.Discricionaria:
                            tipoOrdemAuxiliar = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem.Discricionaria;
                            break;
                        case Sinacor.UI.Bovespa.Ordens.Common.TipoOrdem.OnStop:
                            tipoOrdemAuxiliar = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem.OnStop;
                            break;
                        case Sinacor.UI.Bovespa.Ordens.Common.TipoOrdem.Mercado:
                            tipoOrdemAuxiliar = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem.Mercado;
                            break;
                        case Sinacor.UI.Bovespa.Ordens.Common.TipoOrdem.Limitada:
                            tipoOrdemAuxiliar = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem.Limitada;
                            break;
                        case Sinacor.UI.Bovespa.Ordens.Common.TipoOrdem.Casada:
                            tipoOrdemAuxiliar = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoOrdem.Casada;
                            break;
                    }
                    toRequest.TipoOrdem.Add(tipoOrdemAuxiliar);
                }
            }

            toRequest.CodigoCliente = fromModel.CodigoCliente;
            toRequest.PercentualCorretagem = fromModel.PercentualAcrescismoReducao;
            toRequest.IndicadorPessoaVinculada = fromModel.IsPessoaVinculada;
            toRequest.ContaMae = fromModel.ContaMae;
            toRequest.Carteira = fromModel.Carteira;
            toRequest.TipoLiquidacao = fromModel.TipoLiquidacao;
            toRequest.VencimentoTermo = fromModel.VencimentoTermo;
            toRequest.Titulo = fromModel.Titulo;
            toRequest.NomeEmissorOrdem = fromModel.Emissor;
            toRequest.Cambio = fromModel.ValorDolar;
            toRequest.ValorFinanciado = fromModel.ValorFinanciamento;
            toRequest.TaxaFinanciamento = fromModel.PercentualFinanciamento;
            toRequest.Quantidade = fromModel.Quantidade;
            toRequest.QuantidadeAnexo4 = fromModel.QuantidadeAnexoIV;
            toRequest.QuantidadeAnexo5 = fromModel.QuantidadeAnexoV;
            toRequest.Preco = fromModel.Preco;
            toRequest.Bolsa = fromModel.Bolsa;
            toRequest.DataValidade = fromModel.DataValidade;
            toRequest.CodigoOperador = fromModel.Operador;
            toRequest.IndicadorOrdemAbertaAdminCon = fromModel.IndicadorOrdemAbertaAdminCon; //confirmacao que model(admincon) esta sendo enviado ao servido(request) - esertorio - 200804041624 - ref issue ID0000031

        }

        #endregion CarregarModelManutencaoOrdem

        #region SalvarFinanciamentoPOP

        /// <summary>
        /// SalvarFinanciamentoPOP
        /// </summary>
        /// <param name="model"></param>
        /// <user>hpereira</user>
        public void SalvarFinanciamentoPOP(ModelManutencaoOrdens model)
        {
            IncluirOrdemFinanciamentoPOPRequest request = null;
            OrdemFinanciamentoPOPResponse retorno = null;
            bool sucesso = false; //incluido - esertorio - 200804160010 - ref issue ID0003135

            try
            {
                if (model != null)
                {
                    this._comunicacaoOrdem = new Ordem();

                    request = new IncluirOrdemFinanciamentoPOPRequest();

                    request = CarregarIncluirOrdemFinanciamentoPOPRequest(model); //alterado - esertorio - 200804031822

                    retorno = this._comunicacaoOrdem.IncluirOrdemFinanceiroPOP(request);

                    sucesso = true; //incluido - esertorio - 200804160010 - ref issue ID0003135
                }
            }
            catch (ClientException ex)
            {
                this.HandleException(ex);
            }
            catch (ClientValidationException ex)
            {
                this.HandleException(ex);
            }
            catch (ClientCommunicationException ex)
            {
                this.HandleException(ex);
            }
            catch (ClientGeneralException ex)
            {
                this.HandleException(ex);
            }
            catch (Exception ex)
            {
                this.HandleException(ex);
            }

            if (retorno != null
                && (
                retorno.MensagemBloqueio != null //incluido - esertorio - 200804252007 - ref issue ID0003659
                //|| retorno.MensagemCasamento != null //incluido - esertorio - 200804252007 - ref issue ID0003659 //excluido - esertorio - 200805031854 - ref issue ID0004185
                //|| retorno.MensagemVerificacaoCompliance != null //incluido - esertorio - 200804252007 - ref issue ID0003659 //excluido - esertorio - 200805031854 - ref issue ID0004185
                //|| retorno.MensagemVerificacaoSaldoNegociavel != null //incluido - esertorio - 200804252007 - ref issue ID0003659 //excluido - esertorio - 200805031854 - ref issue ID0004185
                )
                )
            {
                if (retorno.MensagemBloqueio !=null && !String.IsNullOrEmpty(retorno.MensagemBloqueio.Descricao)) //corrigido para tratar nulo - esertorio - 200804232017 - ref issue ID0003284
                    this._view.ExibirMensagem(retorno.TipoBloqueio.Value + ": " + retorno.MensagemBloqueio.Descricao);
            }
            else
            {
                if (sucesso) //incluido - esertorio - 200804160010 - ref issue ID0003135
                {
                    this._view.ExibirMensagem(Mensagem.SalvocomSucesso);

                    if (retorno != null)
                    {
                        if (retorno.MensagemCasamento != null && !String.IsNullOrEmpty(retorno.MensagemCasamento.Descricao)) //corrigido para tratar nulo - esertorio - 200804232017 - ref issue ID0003284 //movido para dentro do else pois nao representa problema - esertorio - 200805031856 - ref issue ID0004185
                            this._view.ExibirMensagem(retorno.MensagemCasamento.Descricao);

                        if (retorno.MensagemVerificacaoCompliance != null && !String.IsNullOrEmpty(retorno.MensagemVerificacaoCompliance.Descricao)) //corrigido para tratar nulo - esertorio - 200804232017 - ref issue ID0003284 //movido para dentro do else pois nao representa problema - esertorio - 200805031856 - ref issue ID0004185
                            this._view.ExibirMensagem(retorno.MensagemVerificacaoCompliance.Descricao);

                        if (retorno.MensagemVerificacaoSaldoNegociavel != null && !String.IsNullOrEmpty(retorno.MensagemVerificacaoSaldoNegociavel.Descricao)) //corrigido para tratar nulo - esertorio - 200804232017 - ref issue ID0003284 //movido para dentro do else pois nao representa problema - esertorio - 200805031856 - ref issue ID0004185
                            this._view.ExibirMensagem(retorno.MensagemVerificacaoSaldoNegociavel.Descricao);
                    }

                    this.CarregarFinanciamentoPOP(model);
                }
            }
        } 

        /// <summary>
        /// Data : 01/04/2008
        /// Autor: Eduardo Sertorio
        /// Obs. : Criacao do metodo para simplificar metodo SalvarFinanciamentoPOP
        /// 
        /// Data : 03/04/2008
        /// Autor: Eduardo Sertorio
        /// Obs. : Renomeado e ajustada assinatura de entrada e saida
        /// </summary>
        /// <param name="model"></param>
        /// <param name="request"></param>
        public IncluirOrdemFinanciamentoPOPRequest CarregarIncluirOrdemFinanciamentoPOPRequest(ModelManutencaoOrdens model)
        {
            if (model == null)
                return null;

            IncluirOrdemFinanciamentoPOPRequest request = new IncluirOrdemFinanciamentoPOPRequest();

            request.DataOrdem = model.DataOrdem;

            request.NumeroOrdem = model.Numero;

            request.NumeroOrdemSequencia = model.NumeroSubSequencia;

            if (model.TipoNaturezaOperacao != null)
            {
                switch (model.TipoNaturezaOperacao)
                {
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoNaturezaOperacao.Compra:
                        request.NaturezaOperacao = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoNaturezaOperacao.Compra;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoNaturezaOperacao.Venda:
                        request.NaturezaOperacao = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoNaturezaOperacao.Venda;
                        break;
                }
            }
            if (model.TipoMercado != null)
            {
                switch (model.TipoMercado)
                {
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Estruturado:
                        request.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Estruturado;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.ExercicioOpcaoCompra:
                        request.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.ExercicioOpcaoCompra;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.ExercicioOpcaoVenda:
                        request.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.ExercicioOpcaoVenda;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Fracionado:
                        request.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Fracionado;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Futuro:
                        request.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Futuro;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Leilao:
                        request.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Leilao;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.LeilaoNaoCotados:
                        request.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.LeilaoNaoCotados;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.OpcaoCompra:
                        request.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.OpcaoCompra;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.OpcaoVenda:
                        request.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.OpcaoVenda;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Termo:
                        request.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Termo;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.VencimentoFuturo:
                        request.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Futuro;
                        break;
                    case Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Vista:
                        request.TipoMercado = Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.Ordem.TipoMercado.Vista;
                        break;
                }
            }
            request.Titulo = model.Titulo;
            request.Quantidade = model.Quantidade;
            request.Preco = model.Preco;
            request.CodigoCarteira = model.Carteira; //incluido - esertorio - 200804241246 - ref issue ID0003580
            request.VencimentoTermo = model.VencimentoTermo;
            request.DataPregao = model.DataPregao;

            return request;
        }

        #endregion SalvarFinanciamentoPOP

        #region SalvarJustificativa

        /// <summary>
        /// SalvarJustificativa
        /// </summary>
        /// <param name="model"></param>
        /// <user>hpereira</user>
        public void SalvarJustificativa(ModelManutencaoOrdens model)
        {
            try
            {
                if (model != null)
                {
                    this._comunicacaoOrdem = new Ordem();

                    //sinacor centura nao inclui justificativa sem alteração na ordem - esertorio - 200803291848 - ref issue ID0000518
                    //if (model.IdentificadorJustificativa != 0)
                    //{
                        this._comunicacaoOrdem.AlterarJustificativa(model);
                    //}
                    //else
                    //{
                    //    this._comunicacaoOrdem.IncluirJustificativa(model);
                    //}
                }
            }
            catch (ClientException ex)
            {
                this.HandleException(ex);
                return;
            }
            catch (ClientValidationException ex)
            {
                this.HandleException(ex);
                return;
            }
            catch (ClientCommunicationException ex)
            {
                this.HandleException(ex);
                return;
            }
            catch (ClientGeneralException ex)
            {
                this.HandleException(ex);
                return;
            }
            catch (Exception ex)
            {
                this.HandleException(ex);
                return;
            }

            this._view.ExibirMensagem(Mensagem.SalvocomSucesso);

        } 

        #endregion

        #region SalvarObservacao

        /// <summary>
        /// SalvarObservacao
        /// </summary>
        /// <param name="model"></param>
        /// <user>hpereira</user>
        public void SalvarObservacao(ModelManutencaoOrdens model)
        {
            AlterarObservacaoRequest request = null;

            try
            {
                if (model != null)
                {
                    this._comunicacaoOrdem = new Ordem();

                    request = new AlterarObservacaoRequest();

                    request.DataOrdem = model.DataOrdem.Value;
                    request.NumeroOrdem = model.Numero.Value;
                    request.NumeroOrdemSequencia = model.NumeroSubSequencia.Value;
                    request.Descricao = model.Observacao;

                    this._comunicacaoOrdem.AlterarObservacao(request);
                }
            }
            catch (ClientException ex)
            {
                this.HandleException(ex);
            }
            catch (ClientValidationException ex)
            {
                this.HandleException(ex);
            }
            catch (ClientCommunicationException ex)
            {
                this.HandleException(ex);
            }
            catch (ClientGeneralException ex)
            {
                this.HandleException(ex);
            }
            catch (Exception ex)
            {
                this.HandleException(ex);
            }
            this._view.ExibirMensagem(Mensagem.SalvocomSucesso);

        } 
        #endregion

        #region Carregar Data Movimento
        /// <summary>
        /// Carrega Data Movimento
        /// </summary>
        /// <user>hpereira</user>
        public void CarregarDataMovimento() //corrigido nome de (CarregarDataMoviemento) para (CarregarDataMovimento) - esertorio - 200804041456 - ref issue ID0002646
        {
            CalendarioResponse retorno = null;
            try
            {
                this._comunicacaoCalendario = new Calendario();

                retorno = this._comunicacaoCalendario.ConsultarDataMovimento();

            }
            catch (ClientException ex)
            {
                this.HandleException(ex);
                
            }
            catch (ClientValidationException ex)
            {
                this.HandleException(ex);
                
            }
            catch (ClientCommunicationException ex)
            {
                this.HandleException(ex);
                
            }
            catch (ClientGeneralException ex)
            {
                this.HandleException(ex);
            }
            catch (Exception ex)
            {
                this.HandleException(ex);
            }

            if (retorno != null)
            {
                this._view.ExibirDataMovimento(retorno.DataPregao);
                //this._view.ExibirDataOrdem(retorno.DataPregao); //excluido - data da ordem sera atribuida somente pela carga da ordem - esertorio - 200804041450 - ref issue ID0002646
            }
        }

        #endregion

        #region Carregar Operador
        /// <summary>
        /// Carregar Operador
        /// </summary>
        /// <user>hpereira</user>
        public void CarregarOperador()
        {
            BindingList<OperadorResponse> retorno = null;
            try
            {
                this._comunicacaoOperador = new Operador();

                retorno = this._comunicacaoOperador.ConsultarOperador();

                //if (retorno != null)
                //    this._view.ExibirOperador(retorno, null); //excluido - chamada duplicada - esertorio - 200804080837 - ref issue ID0000224
            }
            catch (ClientException ex)
            {
                this.HandleException(ex);
                
            }
            catch (ClientValidationException ex)
            {
                this.HandleException(ex);
                
            }
            catch (ClientCommunicationException ex)
            {
                this.HandleException(ex);
                
            }
            catch (ClientGeneralException ex)
            {
                this.HandleException(ex);
            }
            catch (Exception ex)
            {
                this.HandleException(ex);
            }

            if (retorno != null && retorno.Count > 0)
            {
                //int userIdAux = Infra.UI.Managers.SessionManager.RetrieveUserId();
                //int userIdAux = 1; //simula retorno de RetrieveUserId - representa usuario ADM(1)(ponta de mesa)
                string userNameAux = SessionManager.RetrieveUserName(); //incluido para contornar a falha do metodo RetrieveUserId - esertorio - 200803201959 - ref issue ID0000507 de 200803071735

                OperadorResponse operadorResponseAux = null; //representa o objeto do operador/usuario conectado.

                foreach(OperadorResponse operadorResponseItem in retorno)
                {
                    //if (operadorResponseItem.CodigoOperador == userIdAux) //comentado para contornar a falha do metodo RetrieveUserId - esertorio - 200803201959 - ref issue ID0000507 de 200803071735
                    //20080411 15:44 - Alterado - DMilanez.7Comm
                    if (operadorResponseItem.LoginOperador == userNameAux) //incluido para contornar a falha do metodo RetrieveUserId - esertorio - 200803201959 - ref issue ID0000507 de 200803071735
                    {
                        operadorResponseAux = operadorResponseItem;
                        break;
                    }
                }

                ModelManutencaoOrdens modelManutencaoOrdens = new ModelManutencaoOrdens();

                modelManutencaoOrdens.IndicadorOperadorPontaMesa = false; //inicializa propriedade - linha deslocada para fora do else - esertorio - 200803201529

                if (operadorResponseAux != null)
                {
                    modelManutencaoOrdens.IndicadorOperadorPontaMesa = operadorResponseAux.IndicadorPontaMesa;
                    //esta linha foi deslocada de fora para dentro deste if - esertorio - 200803201513 - ref issue ID0001296
                    modelManutencaoOrdens.Operador = operadorResponseAux.CodigoOperador; //determina o item que deve vir selecionado na comboOperador
                }

                this._view.ExibirOperador(retorno, modelManutencaoOrdens);
            }        
        }
        #endregion

        #region Carregar Preferencias Operador
        /// <summary>
        /// Autor: Fabio Minamikawa
        /// Data : 15/02/2008
        /// Obs. : Criacao da estrutura principal de chamada
        /// Carregar Operador
        /// 
        /// Autor: Eduardo Sertorio
        /// Data : 18/02/2008
        /// Obs. : Complementação com as regras.
        /// </summary>
        /// <user>hpereira</user>
        public void CarregarPreferenciasOperador()
        {
            ConsultarPreferenciasOperadorRequest request = new ConsultarPreferenciasOperadorRequest();
            ConsultarPreferenciasOperadorResponse retorno = null;
            //request.CodigoOperador = SessionManager.RetrieveUserId(); - descomentar quando retornar valor correto - esertorio - 200802182023 - ref issue ID0000507 de 200803071735
            request.CodigoOperador = null; //assim obtem os dados do operador conectado ao serviço - eduardo - 200802182023
            try
            {
                this._comunicacaoOperador = new Operador();
                retorno = this._comunicacaoOperador.ConsultarPreferenciasOperador(request);


                if (retorno != null)
                {
                    //incluido - eduardo sertorio - 200802181628
                    ModelManutencaoOrdensInicial modelManutencaoOrdensInicial = new ModelManutencaoOrdensInicial();

                    //incluido - eduardo sertorio - 200802181628
                    if (retorno.IndicadorOrdemModoInserir.HasValue && retorno.IndicadorOrdemModoInserir.Value)
                        modelManutencaoOrdensInicial.EstadoInicialTela = EstadoInicialTela.Insercao;
                    else
                        modelManutencaoOrdensInicial.EstadoInicialTela = EstadoInicialTela.Consulta;

                    //incluido - eduardo sertorio - 200802181628
                    modelManutencaoOrdensInicial.BolsaInicial = retorno.Bolsa;

                    //incluido - eduardo sertorio - 200802181628
                    if (retorno.TipoMercado.HasValue)
                    {
                        switch (retorno.TipoMercado)
                        {
                            case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Operador.Operador.TipoMercado.Vista:
                                modelManutencaoOrdensInicial.TipoMercadoInicial = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Vista;
                                break;
                            case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Operador.Operador.TipoMercado.OpcaoCompra:
                                modelManutencaoOrdensInicial.TipoMercadoInicial = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.OpcaoCompra;
                                break;
                            case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Operador.Operador.TipoMercado.OpcaoVenda:
                                modelManutencaoOrdensInicial.TipoMercadoInicial = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.OpcaoVenda;
                                break;
                            case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Operador.Operador.TipoMercado.ExercicioOpcaoCompra:
                                modelManutencaoOrdensInicial.TipoMercadoInicial = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.ExercicioOpcaoCompra;
                                break;
                            case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Operador.Operador.TipoMercado.ExercicioOpcaoVenda:
                                modelManutencaoOrdensInicial.TipoMercadoInicial = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.ExercicioOpcaoVenda;
                                break;
                            case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Operador.Operador.TipoMercado.Fracionado:
                                modelManutencaoOrdensInicial.TipoMercadoInicial = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Fracionado;
                                break;
                            case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Operador.Operador.TipoMercado.Estruturado:
                                modelManutencaoOrdensInicial.TipoMercadoInicial = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Estruturado;
                                break;
                            case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Operador.Operador.TipoMercado.Leilao:
                                modelManutencaoOrdensInicial.TipoMercadoInicial = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Leilao;
                                break;
                            case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Operador.Operador.TipoMercado.Termo:
                                modelManutencaoOrdensInicial.TipoMercadoInicial = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Termo;
                                break;
                            case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Operador.Operador.TipoMercado.LeilaoNaoCotados:
                                modelManutencaoOrdensInicial.TipoMercadoInicial = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.LeilaoNaoCotados;
                                break;
                            case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Operador.Operador.TipoMercado.Futuro:
                                modelManutencaoOrdensInicial.TipoMercadoInicial = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.Futuro;
                                break;
                            case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Operador.Operador.TipoMercado.VencimentoFuturo:
                                modelManutencaoOrdensInicial.TipoMercadoInicial = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.VencimentoFuturo;
                                break;
                            case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Operador.Operador.TipoMercado.BOX:
                                modelManutencaoOrdensInicial.TipoMercadoInicial = Sinacor.UI.Bovespa.Ordens.Common.TipoMercado.BOX;
                                break;
                            default:
                                break;
                        }
                    }

                    //incluido - eduardo sertorio - 200802181628
                    //incluido verificacao (Count>0) - esertorio - 200804112030 - ref issue ID0000517
                    if (retorno.TipoOrdem != null && retorno.TipoOrdem.Count > 0)
                    {
                        //inicializar propriedades - esertorio - 200804111613 - ref issue ID0000517
                        modelManutencaoOrdensInicial.TipoOrdemOnStopInicial = false;
                        modelManutencaoOrdensInicial.TipoOrdemCasadaInicial = false;
                        modelManutencaoOrdensInicial.TipoOrdemAdministradaInicial = false;
                        modelManutencaoOrdensInicial.TipoOrdemDiscriminatoriaInicial = false;
                        modelManutencaoOrdensInicial.TipoOrdemLimitadaInicial = false;
                        modelManutencaoOrdensInicial.TipoOrdemFinanciamentoInicial = false;
                        modelManutencaoOrdensInicial.TipoOrdemOnStopInicial = false;

                        foreach (Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Operador.Operador.TipoOrdem tipoOrdemItem in retorno.TipoOrdem)
                        {
                            switch (tipoOrdemItem)
                            {
                                case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Operador.Operador.TipoOrdem.Mercado:
                                    modelManutencaoOrdensInicial.TipoOrdemMercadoInicial = true; //corrigido de (TipoOrdemOnStopInicial) para (TipoMercadoInicial) - esertorio - 200804121234 - ref issue ID0002980
                                    break;
                                case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Operador.Operador.TipoOrdem.Casada:
                                    modelManutencaoOrdensInicial.TipoOrdemCasadaInicial = true;
                                    break;
                                case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Operador.Operador.TipoOrdem.Administrada:
                                    modelManutencaoOrdensInicial.TipoOrdemAdministradaInicial = true;
                                    break;
                                case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Operador.Operador.TipoOrdem.Discricionaria:
                                    modelManutencaoOrdensInicial.TipoOrdemDiscriminatoriaInicial = true;
                                    break;
                                case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Operador.Operador.TipoOrdem.Limitada:
                                    modelManutencaoOrdensInicial.TipoOrdemLimitadaInicial = true;
                                    break;
                                case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Operador.Operador.TipoOrdem.Financiamento:
                                    modelManutencaoOrdensInicial.TipoOrdemFinanciamentoInicial = true;
                                    break;
                                case Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Operador.Operador.TipoOrdem.OnStop:
                                    modelManutencaoOrdensInicial.TipoOrdemOnStopInicial = true;
                                    break;
                                default:
                                    break;
                            }
                        }
                    }

                    this._view.ExibirPreferenciasOperador(modelManutencaoOrdensInicial);
                }
            }
            catch (ClientException ex)
            {
                this.HandleException(ex);

            }
            catch (ClientValidationException ex)
            {
                this.HandleException(ex);

            }
            catch (ClientCommunicationException ex)
            {
                this.HandleException(ex);

            }
            catch (ClientGeneralException ex)
            {
                this.HandleException(ex);
            }
            catch (Exception ex)
            {
                this.HandleException(ex);
            }


        }

        #endregion Carregar Preferencias Operador

        #region CarregarParametroControleOrdens

        /// <summary>
        /// Data : 09/04/2008
        /// Autor: Eduardo Sertorio
        /// Obs. : Criação do metodo
        /// </summary>
        /// <param name="modelInicial"></param>
        public void CarregarParametroControleOrdens(ModelManutencaoOrdensInicial modelInicial)
        {
            this._comunicacaoOrdem = new Ordem();
            ModelManutencaoOrdensInicial retorno = null;

            try
            {
                retorno = this._comunicacaoOrdem.ConsultarParametroControleOrdens();
            }
            catch (Exception ex)
            {
                this.HandleException(ex);
            }

            if (retorno != null)
                modelInicial.isIndicadorDigitoAberturaOrdem = retorno.isIndicadorDigitoAberturaOrdem;
        }

        #endregion CarregarParametroControleOrdens

        #region CarregarMensagensJustificativaObservacao
        /// <summary>
        /// CarregarMensagensJustificativaObservacao
        /// </summary>
        /// <user>hpereira</user>
        public void CarregarMensagensJustificativaObservacao()
        {
            BindingList<MensagemResponse> retorno = null;
            try
            {
                this._comunicacaoOrdem = new Ordem();
                retorno = this._comunicacaoOrdem.ConsultarMensagemJustificativaObservacao();

                if (retorno != null)
                    this._view.ExibirMensagemJustificativaObservacao(retorno);
            }
            catch (ClientException ex)
            {
                this.HandleException(ex);
                
            }
            catch (ClientValidationException ex)
            {
                this.HandleException(ex);
                
            }
            catch (ClientCommunicationException ex)
            {
                this.HandleException(ex);
                
            }
            catch (ClientGeneralException ex)
            {
                this.HandleException(ex);
            }
            catch (Exception ex)
            {
                this.HandleException(ex);
            }
        }

        #endregion

        #region Capturar Valor Combo Mensagem

        /// <summary>
        /// CapturarValorComboMensagem
        /// </summary>
        /// <user>mazevedo</user>
        public string CapturarValorComboMensagem(object itemCombo)
        {
            return ((MensagemResponse)itemCombo).Descricao;
        }
        
        #endregion

        #region ValidarDataPregaoPreBoletoOrdem
        /// <summary>
        /// Data : 25/04/2008
        /// Autor: Eduardo Sertorio
        /// Obs. : Validar chamada do pré-boleto. Copiado da tela do MegaBolsa e adaptado pois a regra é a mesma.
        /// </summary>
        /// <param name="model"></param>
        /// <param name="selectedItem"></param>
        /// <returns></returns>
        public bool ValidarDataPregaoPreBoletoOrdem(ModelManutencaoOrdens model, DateTime? dataPregao)
        {
            bool retorno = false;
            ValidarDataPregaoPreBoletoOrdemRequest request = null;
            try
            {
                this._comunicacaoOrdem = new Ordem();

                request = new ValidarDataPregaoPreBoletoOrdemRequest();

                request.DataPregaoPreBoleto = dataPregao.Value;
                request.DataOrdem = model.DataOrdem.Value;
                request.NumeroOrdem = model.Numero.Value;
                request.NumeroOrdemSubSequencia = model.NumeroSubSequencia;
                //20080504 18:03 - RValadao
                //Parametro para verificar a permissão do usuário alterar pré boleto.
                if (model.DataValidade.HasValue)
                    request.DataValidade = model.DataValidade.Value;
                this._comunicacaoOrdem.ValidarDataPregaoPreBoletoOrdem(request); //alterado - esertorio - 200804281517 - ref issue ID0003686

                retorno = true;
            }
            catch (ClientException ex)
            {
                HandleException(ex);
            }
            catch (ClientValidationException ex)
            {
                HandleException(ex);
            }
            catch (ClientCommunicationException ex)
            {
                HandleException(ex);
            }
            catch (ClientGeneralException ex)
            {
                HandleException(ex);
            }
            catch (Exception ex)
            {
                HandleException(ex);
            }

            return retorno;
        }
        #endregion ValidarDataPregaoPreBoletoOrdem

        #region ValidarTituloMercado

        /// <summary>
        /// Data : 28/04/2008
        /// Autor: Eduardo Sertorio
        /// Obs. : Criacao do metodo - esertorio - 200804281753 - ref issue ID0003687
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public bool ValidarTituloMercado(ModelTitulo request)
        {
            BindingList<ModelTitulo> response = null;
            bool retorno = false;

            try
            {
                this._comunicacaoTitulo = new Titulo();

                response = this._comunicacaoTitulo.ConsultarTitulos(request);

                if (response == null || response.Count == 0)
                    retorno = false;
                else
                    retorno = true;
            }
            catch (ClientException ex)
            {
                HandleException(ex);
            }
            catch (ClientValidationException ex)
            {
                HandleException(ex);
            }
            catch (ClientCommunicationException ex)
            {
                HandleException(ex);
            }
            catch (ClientGeneralException ex)
            {
                HandleException(ex);
            }
            catch (Exception ex)
            {
                HandleException(ex);
            }

            return retorno;
        }

        #endregion

        #region ValidarCliente

        /// <summary>
        /// Data : 02/05/2008
        /// Autor: Eduardo Sertorio
        /// Obs. : Criacao do metodo (ValidarCliente) - esertorio - 200805022148 - ref issue ID0003694
        /// </summary>
        /// <param name="model"></param>
        public bool ValidarCliente(ModelManutencaoOrdens model)
        {
            bool retorno = false;
            ClienteResponse response = null;
            ConsultarClienteApelidoRequest request = null;

            try
            {
                this._comunicacaoCliente = new Cliente();

                request = new ConsultarClienteApelidoRequest();
                request.Apelido = model.ApelidoCliente;
                request.Digito = model.CodigoDigitoCliente; //incluido - esertorio - 200804091800 - ref issue ID0002810

                response = this._comunicacaoCliente.ConsultarClienteApelido(request);

                retorno = (response != null);
            }
            catch (ClientException ex)
            {
                this.HandleException(ex);
            }
            catch (ClientValidationException ex)
            {
                this.HandleException(ex);
            }
            catch (ClientCommunicationException ex)
            {
                this.HandleException(ex);
            }
            catch (ClientGeneralException ex)
            {
                this.HandleException(ex);
            }
            catch (Exception ex)
            {
                this.HandleException(ex);
            }

            return retorno;
        }
        #endregion ValidarCliente

    }
}

